import bpy
from subprocess import run

# get python's binary path (literally my saviour)
py_bin = bpy.app.binary_path_python
pip_install = [py_bin, "-B", "-m", "pip", "install",
               "--trusted-host", "pypi.python.org",
               "--trusted-host", "files.pythonhosted.org",
               "--trusted-host", "pypi.org",
               "-U", "--force-reinstall", "--only-binary", ":all:"]
upd_mods = ["pip", "wheel", "setuptools"]
new_mods = ["lxml"]

try:
  import pip
  import lxml
except:
  # hecking install pip (ensurepip) + required modules
  run([py_bin, "-B", "-m", "ensurepip"])  
  # update basic modules then download new modules
  run(pip_install + upd_mods)
  run(pip_install + new_mods)
  print("First exit!")
  bpy.ops.wm.quit_blender()
  exit(0)

# print module's versions installed
print("pip %s is installed!" % (pip.__version__))
print("lxml %s is installed!" % (lxml.__version__))
